﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Configuration;
using System.Data.SqlClient;
using System.Data;
using System.Collections;

public partial class NotaPedido : System.Web.UI.Page
{
    private static ArrayList array = new ArrayList();
    private static int[] cod_producto = new int[12];
    private static int[] cantidad = new int[12];
    private static ArrayList nombreProducto = new ArrayList();
    private static int posicion_fila = 0;
    private static int cod_pago;

    //Creo un objeto DataTable que representará una tabla con el nombre Tabla1
    private static DataTable table = new DataTable("Tabla1");
    private static int contador = 0;
    private static int numero_factura;


    protected void Page_Load(object sender, EventArgs e)
    {
        imgbt_Clientes.Attributes.Add("OnClick", "javascript:popUpClientes();");
        imgbt_Producto.Attributes.Add("OnClick", "javascript:popUpProductos();");
        lb_Fecha.Text = System.DateTime.Now.ToString();


        //Si la factura no se ha guardado todavia. Averigua el siguiente codigo de factura
        if (contador == 0)
        {
            String cadena = (String)ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
            SqlConnection conexion = new SqlConnection(cadena);
            try
            {
                conexion.Open();
                SqlCommand Cod_Factura = new SqlCommand();
                Cod_Factura.CommandText = "select coalesce(max(cod_nota_de_pedido),0)+1 from nota_de_pedido";
                Cod_Factura.Connection = conexion;
                Cod_Factura.CommandType = CommandType.Text;
                SqlDataReader read1 = Cod_Factura.ExecuteReader();
                read1.Read();
                //lb_Nro_factura.Text = read1.GetValue(0).ToString();
                numero_factura = Convert.ToInt32(read1.GetValue(0).ToString());
                txt_numero_factura.Text = read1.GetValue(0).ToString();
              
            }
            catch (Exception error)
            {
                Page.RegisterStartupScript("alerta", "<SCRIPT> alerta(" + error.Message.ToString() + ") </SCRIPT>");
            }
            finally
            {
                conexion.Close();
            }
            lb_Estado.Text = "Activo";
            lb_FacturaGuardada.Text = "no";
            contador = contador + 1;
        }

    }

    public void guardar_factura_cabecera(){
        
            String cadena = (String)ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
            SqlConnection conexion = new SqlConnection(cadena);
            conexion.Open();            
                try
                {

                    SqlCommand comando = new SqlCommand();
                    comando.Connection = conexion;
                    comando.CommandType = System.Data.CommandType.StoredProcedure;
                    comando.CommandText = "insertar_nota_de_pedido";
                    comando.Parameters.AddWithValue("@cod_cliente",txt_cod_cliente.Text );
                    comando.Parameters.AddWithValue("@cod_funcionario",1);
                    SqlDataReader reader = comando.ExecuteReader();
                    //lb_Estado.Text = "Activo";

                }
                catch (Exception error)
                {
                    Page.RegisterStartupScript("alerta", "<SCRIPT> alerta(" + error.Message.ToString() + ") </SCRIPT>");

                }
                finally
                {
                    conexion.Close();
                }
            }
        

    protected void imgbt_agregar_producto_Click(object sender, ImageClickEventArgs e)
    {
        tr_guardar_producto.Visible = true;
        GView_Detalle_Factura.DataSource = table;
        GView_Detalle_Factura.DataBind();
    }
    protected void imgbt_guardar_factura_Click(object sender, ImageClickEventArgs e)
    {
        if (L_FacturaGuardada.Text == "no")
        {
            if (txt_cod_cliente.Text == "" )
            {
                lb_Error_Cliente.Visible = true;
                lb_Error_Texto.Visible = true;
            }
            else
            {
                guardar_factura_cabecera();
                int temp = 0;
                String cadena = (String)ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
                SqlConnection conexion = new SqlConnection(cadena);
                while (cod_producto[temp] != 0)
                {
                    //Aqui se agrega el producto
                    
                    try
                    {
                        conexion.Open();
                        //Insertar un detalle
                        SqlCommand command = new SqlCommand("insertar_nota_de_pedido_detalle", conexion);
                        command.CommandType = System.Data.CommandType.StoredProcedure;
                        command.Parameters.AddWithValue("@cod_nota_de_pedido", numero_factura);
                        command.Parameters.AddWithValue("@cod_producto", cod_producto[temp]);
                        command.Parameters.AddWithValue("@cantidad", cantidad[temp]);
                        

                        SqlDataReader reader = command.ExecuteReader();


                        reader.Close();
                        

                    }
                    catch (Exception error)
                    {
                        Page.RegisterStartupScript("alerta", "<SCRIPT> alerta(" + error.Message.ToString() + ") </SCRIPT>");
                        //Label3.Text = error.Message.ToString();
                    }
                    finally
                    {

                        txt_cod_cliente.Text = null;
                        txt_nombre_cliente.Text = null;
                        txt_total_a_pagar.Text = null;
    
                        conexion.Close();
                    }
                    temp = temp + 1;


                }
                //Sumar el importe total en la casilla de importe
                //conexion.Open();
                //SqlCommand importe_total = new SqlCommand();
                //importe_total.CommandText = "select total_con_iva from nota_de_pedido where cod_nota_de_pedido=" + lb_Nro_factura.Text;
                //importe_total.Connection = conexion;
                //importe_total.CommandType = CommandType.Text;
                //SqlDataReader importe_total_reader = importe_total.ExecuteReader();
                //importe_total_reader.Read();
                //txt_total_a_pagar.Text = importe_total_reader.GetValue(0).ToString();
                //importe_total_reader.Close();
                //conexion.Close();

                Page.RegisterStartupScript("alerta", "<SCRIPT> alerta('Nota de pedido guardada') </SCRIPT>");
                tr_guardar_cabecera.Visible = false;
                L_FacturaGuardada.Text = "si";
                lb_Estado.Text = "Finalizado";
                posicion_fila = 0;
                lb_Error_Cliente.Visible = false;
                lb_Error_Texto.Visible = false;
                contador = 0;
            }
        }
    }



    protected void imgbt_buscar_nota_Click(object sender, ImageClickEventArgs e)
    {

        GridView__nota_pedido_detalle.DataBind();
        
    }

    protected void GView_Factura_Ventas_RowCommand(Object sender, GridViewCommandEventArgs e)
    {
        if (e.CommandName == "Leer")
        {
            GridView_Nota_Pedido.SelectedIndex = Convert.ToInt32(e.CommandArgument);
            String cod_Factura = GridView_Nota_Pedido .SelectedRow.Cells[0].Text;
            txt_codigo_nota_seleccionada.Text = cod_Factura;
        }
    }


    protected void b_aceptar_Click(object sender, EventArgs e)
    {
        if (txt_cod_cliente.Text == "")
        {
            lb_Error_Producto.Visible = true;
            lb_Error_Texto.Visible = true;
        } if (txt_cantidadTex.Text == "")
        {
            lb_Error_Cantidad.Visible = true;
            lb_Error_Texto.Visible = true;
        }
        if (txt_cod_producto.Text != "" && txt_cantidadTex.Text != "")
        {
            cod_producto[posicion_fila] = Convert.ToInt32(txt_cod_producto.Text);
            cantidad[posicion_fila] = Convert.ToInt32(txt_cantidadTex.Text);

            DataRow fila = table.NewRow();
            if (posicion_fila == 0)
            {
                table.Columns.Clear();
                table.Clear();
                DataColumn column1 = new DataColumn();
                DataColumn column2 = new DataColumn();
                DataColumn column3 = new DataColumn();
                DataColumn column4 = new DataColumn();
                column1.ColumnName = "Codigo ";
                column2.ColumnName = "Producto ";
                column3.ColumnName = "Cantidad ";
                column4.ColumnName = "Total";

                column1.DataType = System.Type.GetType("System.Int32");
                column2.DataType = System.Type.GetType("System.String");
                column3.DataType = System.Type.GetType("System.Int32");
                column4.DataType = System.Type.GetType("System.Int32");


                table.Columns.Add(column1);
                table.Columns.Add(column2);
                table.Columns.Add(column3);
                table.Columns.Add(column4);



                //cargarFilas
                fila["Codigo "] = System.Int32.Parse(txt_cod_producto.Text);
                fila["Producto "] = txt_nombre_Producto.Text;
                fila["Cantidad "] = System.Int32.Parse(txt_cantidadTex.Text);
                fila["Total"] = System.Int32.Parse(txt_cantidadTex.Text) *
                    (System.Int32.Parse(txt_precio_producto.Text) + (System.Int32.Parse(txt_precio_producto.Text)) / 10);
                table.Rows.Add(fila);

            }
            else
            {
                //cargarFilas
                fila["Codigo "] = System.Int32.Parse(txt_cod_producto.Text);
                fila["Producto "] = txt_nombre_Producto.Text;
                fila["Cantidad "] = System.Int32.Parse(txt_cantidadTex.Text);
                fila["Total"] = System.Int32.Parse(txt_cantidadTex.Text) *
                    (System.Int32.Parse(txt_precio_producto.Text) + (System.Int32.Parse(txt_precio_producto.Text)) / 10);
                table.Rows.Add(fila);
            }
            limpiar_campos_producto();
            GView_Detalle_Factura.DataSource = table;
            GView_Detalle_Factura.DataBind();
            posicion_fila = posicion_fila + 1;
            lb_Error_Cantidad.Visible = false;
            lb_Error_Producto.Visible = false;
            lb_Error_Texto.Visible = false;
            tr_guardar_producto.Visible = false;
        }
    }
    private void limpiar_campos_producto()
    {
        txt_nombre_Producto.Text = "";
        txt_cantidadTex.Text = "";
        txt_precio_producto.Text = "";
        txt_cod_producto.Text = "";
    }

    protected void b_cancelar_Click(object sender, EventArgs e)
    {
        limpiar_campos_producto();
        tr_guardar_producto.Visible = false;
        GView_Detalle_Factura.DataSource = table;
        GView_Detalle_Factura.DataBind();
    }

    protected void imgbt_cancelar_factura_Click(object sender, ImageClickEventArgs e)
    {
        limpiar_campos_producto();
        txt_nombre_cliente.Text = "";
        txt_cod_cliente.Text = "";
        table.Columns.Clear();
        table.Clear();
        contador = 0;
    }
}
